#ifndef SUBDIVISION_OF_POLYGON_H_
#define SUBDIVISION_OF_POLYGON_H_
#include<stdlib.h>
#include<stdio.h>
#include<Math/LB_Math.h>
#include <Algorithm/threeD_elementary_geometry_tool_library.h>
#ifndef SAFE_SQRT
#define SAFE_SQRT(x) (x>=0?sqrt(x):sqrt(-x))
#endif
#ifndef SAFE_FREE
#define SAFE_FREE(x) if(x!=NULL){free(x);x=NULL;}
#endif
#ifndef M_PI
#define M_PI 3.14159265358979323846
#endif
#ifdef __cplusplus
extern "C"{

#endif

// 整个算法还是做点云的delaunay剖分，然后不断做边（或面）的调整
// 只有这样才能拓展到n维
// 

//double* compute_plane_normal_of_jordan_curve_from_node(Node*);

int is_acute_angle_in_polygon(double**v,int len,double*n,int at);





// 建议这个函数
//
void subdivision_of_polygon(double ** v,int len,int ** s);

// 下面函数不建议使用
//
// void optimization_subdivision_of_polygon(double** v,int len ,int **s);


// 
// 

//在带边剖分中，需要寻找不相交的边界单形，然后做边和边界单形的剖分


void subdivision_of_polygon_with_edges(double** v,int len, 
    int* bound,int bound_len,int**edges,int edge_len,
    int ** re,int* re_len);

int** optimization_subdivision_of_polygon_with_edges(double** v,int len, 
    int* bound,int bound_len,int**edges,int edge_len,int* re_len);



#ifdef __cplusplus
}
#endif

#endif